package com.situ.admin.controller;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.ResponseBody;

import com.situ.admin.bean.APIResult;
import com.situ.admin.utils.TokenUtil;
import com.situ.admin.utils.TokenUtil.Token;
import com.situ.admin.utils.VerCodeUtil;

@Controller
@CrossOrigin(origins = { "*" })
public class VercodeController {

	/**
	 * 
	 * @author: JavaSiegeLoin(Gang)
	 * @创建日期: 2021年10月13日 上午10:12:22
	 * @Title: vercode
	 * @throws:
	 * @类描述-Description:返回一张图片
	 */
	@GetMapping("/vercode")
	@ResponseBody
	public APIResult vercode() {

		/**
		 * Token:会话保持的技术， session和cookie 不能跨域 实际上就是一个字符串，由服务器生成，交给客户端
		 * 通过加密的方式将登录的信息，保存在Token请求中
		 * 
		 * 
		 * 优势 不需要将数据保存到内存中 不受跨域请求的设置 在请后端分离的项目中和分布式系统中 广受应用
		 */
		String vercode = VerCodeUtil.randomCode(4);
		APIResult apiResult = new APIResult();
		// 加密到Token JWT
		String createToken = TokenUtil.createToken(vercode);

		apiResult.setStatus(200);
		apiResult.setMsg(createToken);

		return apiResult;
	}

	@GetMapping("/vercode/{token}")
	public void vercode(@PathVariable("token") String strToken, HttpServletResponse response) {

		// 解密
		Token token = TokenUtil.parseToken(strToken);

		String vercode = token.getCode();

		VerCodeUtil.createVerCode(response, vercode);
	}

}
